/**
 * Copyright(c) 2014 Xunton Solutions
 *
 * History:
 *   15-1-18 下午11:47 Created by dwzhang
 */
package com.jade.modules.cms;

import java.util.List;

import com.jade.framework.base.criterion.Criteria;
import com.jade.framework.base.util.PagingList;
import com.jade.framework.base.util.Parameters;

/**
 * 内容数据访问接口。
 *
 * @author <a href="mailto:dwzhang@xunton.com">dwzhang</a> 
 * @version 1.0 15-1-18 下午11:47
 */
public interface ContentDao
{
    /**
     * 创建内容。
     *
     * @param content 内容信息。
     * @throws CmsException 处理异常。
     */
    public void add(Content content)
            throws CmsException;

    /**
     * 更新内容.
     *
     * @param content 内容信息。
     * @throws CmsException 处理异常
     */
    public void update(Content content)
            throws CmsException;

    /**
     * 更新内容指定的参数。
     *
     * @param id 内容标识
     * @param params 需要更改的参数
     * @param statuses 记录匹配的状态，仅针对指定的状态进行变更。
     * @return 更新的记录数量
     * @throws CmsException 处理异常
     */
    public int update(long id, Parameters params, int[] statuses)
            throws CmsException;

    /**
     * 删除内容。
     *
     * @param content 内容内容
     * @throws CmsException 处理异常。
     */
    public void remove(Content content)
            throws CmsException;

    /**
     *  获取内容详细信息。
     *
     * @param id 内容标识
     * @return 内容信息对象
     */
    public Content get(long id);

    /**
     * 根据条件列出内容。
     *
     * @param criteria 查询条件
     * @return 内容列表
     */
    public List<Content> list(Criteria criteria);

    /**
     * 根据条件分页列出内容。
     *
     * @param criteria 查询条件
     * @return 内容列表。
     */
    public PagingList<Content> query(Criteria criteria);

}
